﻿using Myotragus.Data.Containers;

namespace Myotragus.Data.Hbm
{
	/// <summary>
	/// Creates a hbm from a template replacing custom directives.
	/// </summary>
	/// <remarks>
	/// Current implementation resolves type implementations registered to the
	/// <see cref="IEntitiesContainer"/>. Resolutions are available only within
	/// quoted strings.
	/// <example>
	/// To express a generic type use curly braces '{}' like xml documentation. Namespaces can
	/// be included if needed. Don't include the assembly name. Don't use C# built-in type shortcuts, e.g., int.
	/// <code>
	///	 class="$Resolve: ILoadEntity{IProduct}"
	/// </code>
	/// </example>
	/// </remarks>
	public interface IResolutionHbmGenerator : IService
	{
		string Generate(string hbmTemplate);
	}
}